我的代码:
camera = new RaspiCam_Cv();//raspbery pi library
camera->set(CV_CAP_PROP_FORMAT,CV_8UC1); //this is monochrome 8 bit format
camera->set(CV_CAP_PROP_FRAME_WIDTH, 960);
camera->set(CV_CAP_PROP_FRAME_HEIGHT,720);
while (1){
camera->grab();//for linux
unsigned char* buff = camera->getImageBufferData();
QPixmap pic = QPixmap::fromImage(QImage( buff, camWidth_, camHeight_, camWidth_ * 1, QImage::Format_Indexed8 ));
label->setPixmap(pic);
}
问题是质量差!我发现问题发生在使用QImage
时,使用openCv Mat
时,一切都很好!
其他基于Qt的程序也会发生同样的事情,比如这个程序(质量相同):https://code.google.com/p/qt-opencv-multithreaded/
这是一张照片,显示了问题所在。 相机前面有一个白页,所以如果一切都按照原样进行,你应该看到干净的灰色图像 。
答案 0 :(得分:1)
您正在使用像素图和标签转换来调整图像大小,这比QImage更糟糕。这是因为pixmap被优化用于显示而不是其他任何东西。像素图大小应与标签相同,以避免进一步调整大小。
QImage img =QImage(
buff,
camWidth_,
camHeight_,
camWidth_ * 1,
QImage::Format_Indexed8 ).scaled(label->size());
label->setPixmap(QPixmap::fromImage(img));
答案 1 :(得分:1)
这不是答案,但在评论中分享代码太难了。 你能测试一下这段代码并告诉我结果是好还是坏?
int main(int argc, char** argv)
{
RaspiCam_Cv *camera = new RaspiCam_Cv();
camera->set(CV_CAP_PROP_FORMAT , CV_8UC1) ;
camera->set(CV_CAP_PROP_FRAME_WIDTH, 960);
camera->set(CV_CAP_PROP_FRAME_HEIGHT,720);
namedWindow("Output",CV_WINDOW_AUTOSIZE);
while (1)
{
Mat frame;
camera.grab();
//camera.retrieve ( frame);
unsigned char* buff = camera->getImageBufferData();
frame = cv::Mat(720, 960, CV_8UC1, buff);
imshow("Output", frame);
if (waitKey(30) == 27)
{ cout << "Exit" << endl; break; }
}
camera->~RaspiCam_Cv();
return 0;
}
答案 2 :(得分:0)
您提供的图像看起来颜色深度仅为16位。
为了比较,这里提供了拍摄的图像:
并且这里是相同的图像,在IrfanView中转换为16位色彩空间(没有Floyd-Steinberg-Dithering)。
在评论中我们发现Raspberry Pi输出缓冲区设置为16位。并将其设置为24位帮助。
但是我无法解释为什么使用OpenCV $password = "test";
$hash = "$2y$10$fXJEsC0zWAR2tDrmlJgSaecbKyiEOK9GDCRKDReYM8gH2bG2mbO4e";
if (password_verify($password, $hash)) {
echo "Success";
}
else {
echo "Error";
}
OR
You can use this one too
$verify=password_verify($_POST['passwrd'],$row[2]);
if($verify){
$_SESSION["usrname"]=$usrname;
echo "Correct";
}
else {
echo "user: " . $usrname. "<br>";
echo "pass: " . $hash. "<br>";
echo "db: " . $row[2]."<br>";
echo "Wrong Username or Password";
}
在pi上渲染图像会在监视器/电视上产生漂亮的图像...