#图像处理学习错误#---无法将参数 1 从“Y *”转换为“std::nullptr_t

这个错误定位了半小时,还网上各种搜索,要怪只能怪学校没让我学C,直接学C++,连printf都不会写(为自己的蠢找借口,蒙脸不愿见人)

 

1、代码

#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include<iostream>
#include<math.h>

using namespace cv;
using namespace std;

Mat src;
int main(int argc,char** argv)
{
	src = imread("F:/yourtask/OpenCV/picturelibrary/caseone/a.jpg");
	if (src.empty())
	{
		print("could not load image\n");
		return -1;
	}

	namedWindow("input image",WINDOW_AUTOSIZE);
	imshow("input image", src);

	waitKey(0);
	return 0;
}

 

2、错误现象:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    C2664    “std::shared_ptr<T>::shared_ptr(std::shared_ptr<T> &&) noexcept”: 无法将参数 1 从“Y *”转换为“std::nullptr_t”    qiebiana    d:\program files (x86)\opencv-4.0.0-alpha-vc14_vc15\opencv\build\include\opencv2\core\cvstd_wrapper.hpp    93    
 

 2、错误原因

printf写成了print。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
要将HTTP响应中的图像保存为PNG文件,您需要执以下步骤: 1. 使用C++中的HTTP客户端库(如CURL)发送HTTP请求并获得响应。 2. 从响应中读取图像数据。这通常涉及将响应体从字节数组转换为图像格式(在本例中为PNG)。 3. 将图像数据写入文件。对于PNG文件,您可以使用libpng库进编码并将其写入磁盘。 以下是一个示例代码,它使用CURL和libpng库将PNG图像保存到磁盘: ```c++ #include <curl/curl.h> #include <png.h> #include <fstream> size_t write_data(void* ptr, size_t size, size_t nmemb, void* stream) { std::vector<unsigned char>& buffer = *reinterpret_cast<std::vector<unsigned char>*>(stream); const size_t bytes = size * nmemb; buffer.insert(buffer.end(), static_cast<unsigned char*>(ptr), static_cast<unsigned char*>(ptr) + bytes); return bytes; } void save_png(const std::vector<unsigned char>& data, const char* file_path) { png_image image; memset(&image, 0, sizeof(image)); image.version = PNG_IMAGE_VERSION; if (png_image_begin_read_from_memory(&image, &data[0], data.size()) == 0) { png_image_free(&image); throw std::runtime_error("Failed to begin read PNG image from memory"); } image.format = PNG_FORMAT_RGBA; std::ofstream file(file_path, std::ios::out | std::ios::binary); if (file.fail()) { png_image_free(&image); throw std::runtime_error("Failed to open output PNG file"); } png_bytep buffer = new png_byte[PNG_IMAGE_SIZE(image)]; png_image_finish_read(&image, nullptr, buffer, 0, nullptr); png_image_free(&image); png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); if (png_ptr == nullptr) { delete[] buffer; file.close(); throw std::runtime_error("Failed to create PNG write struct"); } png_infop info_ptr = png_create_info_struct(png_ptr); if (info_ptr == nullptr) { png_destroy_write_struct(&png_ptr, nullptr); delete[] buffer; file.close(); throw std::runtime_error("Failed to create PNG info struct"); } if (setjmp(png_jmpbuf(png_ptr))) { png_destroy_write_struct(&png_ptr, nullptr); delete[] buffer; file.close(); throw std::runtime_error("Failed to set PNG error handling"); } png_init_io(png_ptr, &file); png_set_IHDR(png_ptr, info_ptr, image.width, image.height, 8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); png_write_info(png_ptr, info_ptr); for (size_t y = 0; y < image.height; ++y) { png_write_row(png_ptr, buffer + (y * PNG_IMAGE_ROW_STRIDE(image))); } png_write_end(png_ptr, info_ptr); png_destroy_write_struct(&png_ptr, &info_ptr); delete[] buffer; file.close(); } int main() { CURL* curl = curl_easy_init(); if (curl) { std::vector<unsigned char> response; curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/image.png"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); CURLcode res = curl_easy_perform(curl); curl_easy_cleanup(curl); if (res == CURLE_OK) { save_png(response, "image.png"); } } return 0; } ``` 此代码使用CURL库从给定URL下载PNG图像,并使用libpng将其写入磁盘。请注意,此示例仅适用于PNG格式的图像。如果您需要处理其他格式的图像,请相应地修改代码
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值